{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simple Neural Network learns sine function using JAX, Equinox and Optax"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://upload.wikimedia.org/wikipedia/commons/8/86/Google_JAX_logo.svg\" width=150 />\n",
    "<img src=\"https://optax.readthedocs.io/en/latest/_static/logo.svg\" width=150 />"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jax\n",
    "import jax.numpy as jnp\n",
    "import equinox as eqx\n",
    "import optax\n",
    "import matplotlib.pyplot as plt\n",
    "from typing import List"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "N_SAMPLES = 200\n",
    "LAYERS = [1, 10, 10, 10, 1]\n",
    "LEARNING_RATE = 0.1\n",
    "N_EPOCHS = 30_000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n"
     ]
    }
   ],
   "source": [
    "key = jax.random.PRNGKey(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "key, xkey, ynoisekey = jax.random.split(key, 3)\n",
    "x_samples = jax.random.uniform(xkey, (N_SAMPLES, 1), minval=0.0, maxval=2*jnp.pi)\n",
    "y_samples = jnp.sin(x_samples) + jax.random.normal(ynoisekey, (N_SAMPLES, 1)) * 0.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7efc5c137700>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABK00lEQVR4nO3de3hU1bk/8O8Ek0AoCYRLEjBAQCogcrWRCK0KoQQ9FG1/HqF6itbiIz94DoKnRXpUpJ42UmuFCkcqrUVLBXtOC15oo0BQftAgSkw1QhFiuBQyIAQyECDQzP79QSfkMnvvte9r7/l+nifPI8memZVJ4nr3u971rpCiKAqIiIiIfCLJ6wEQERERGcHghYiIiHyFwQsRERH5CoMXIiIi8hUGL0REROQrDF6IiIjIVxi8EBERka8weCEiIiJfucrrAdgtGo3i6NGj6NSpE0KhkNfDISIiIgGKouDMmTPo2bMnkpK0cyuBC16OHj2K3Nxcr4dBREREJhw+fBhXX3215jWBC146deoE4PI3n56e7vFoiIiISEQkEkFubm7TPK4lcMFLbKkoPT2dwQsREZHPiJR8sGCXiIiIfIXBCxEREfkKgxciIiLyFQYvRERE5CsMXoiIiMhXGLwQERGRrzB4ISIiIl9h8EJERES+ErgmdUROa4wq2Fldi+NnLqBHp/bIz8tEuySeo0VE5BYGL0QGlFTWYNGbu1FTd6HpczkZ7bFw8mAUDcnxcGRERImDy0ZEgkoqazBzdXmLwAUAwnUXMHN1OUoqazwaGRFRYmHwQiSgMapg0Zu7ocT5Wuxzi97cjcZovCuIiMhODF6IBOysrm2TcWlOAVBTdwE7q2vdGxQRUYJi8EIk4PgZ9cDFzHVERGQegxciAT06tbf1OiIiMo/BC5GA/LxM5GS0h9qG6BAu7zrKz8t0c1hERAmJwQuRgHZJISycPBgA2gQwsX8vnDyY/V6IiFzA4IVIUNGQHLxw70hkZ7RcGsrOaI8X7h3JPi9ERC5hkzoiA4qG5GDC4Gx22CUi8hCDFyKD2iWFUNC/q9fDICJKWFw2IiIiIl9h8EJERES+wuCFiIiIfIXBCxEREfkKgxciIiLyFUeDl61bt2Ly5Mno2bMnQqEQ1q9fr3n9u+++i1Ao1OYjHA47OUwiIiLyEUeDl/r6egwbNgzLly839Li9e/eipqam6aNHjx4OjZCIiIj8xtE+L5MmTcKkSZMMP65Hjx7o3Lmz/QMiIiIi35Oy5mX48OHIycnBhAkTsH37ds1rGxoaEIlEWnwQERFRcEkVvOTk5GDFihX4wx/+gD/84Q/Izc3FLbfcgvLyctXHFBcXIyMjo+kjNzfXxRETERGR20KKoiiuvFAohHXr1uGOO+4w9Libb74ZvXv3xm9/+9u4X29oaEBDQ0PTvyORCHJzc1FXV4f09HQrQyYiIiKXRCIRZGRkCM3f0p9tlJ+fj23btql+PTU1FampqS6OiIiIiLwk1bJRPBUVFcjJyfF6GERERCQJRzMvZ8+exf79+5v+XV1djYqKCmRmZqJ3795YsGABjhw5gldeeQUAsGTJEuTl5eG6667DhQsX8Ktf/QqlpaV45513nBwmSaYxqmBndS2On7mAHp3aIz8vE+2SQl4PyxWJ/L0TEYlyNHj58MMPceuttzb9e968eQCA6dOnY9WqVaipqcGhQ4eavn7x4kU88sgjOHLkCNLS0jB06FBs2rSpxXNQsJVU1mDRm7tRU3eh6XM5Ge2xcPJgFA0JdgYukb93IiIjXCvYdYuRgh+SS0llDWauLkfrX8hY3uGFe0cGdhJP5O+diAgwNn9LX/NCiaExqmDRm7vbTN4Amj636M3daIwGKtYGkNjfOxGRGQxeSAo7q2tbLJe0pgCoqbuAndW17g3KJYn8vRMRmcHghaRw/Iz65G3mOj9J5O+diMgMBi8khR6d2tt6nZ8k8vdORGQGgxeSQn5eJnIy2kNtU3AIl3fe5Odl6j5XY1RBWdVJvF5xBGVVJ6WvFbHzeyciSgTSd9ilYFHrY9IuKYSFkwdj5upyhIAWxauxSX3h5MG6PU/8uN3Yru+diChRcKs0uUYksLASfPh9u7EfAy8iIrsYmb8ZvJArjAQWZrrMNkYVjF1cqrprJwQgO6M9ts0fJ3UGgx12iShRBepgRvI/vT4mIVzuYzJhcHbTElJB/66GXsPIdmOjz+0mM987EVGiYcEuOc6NPiZB327styJkIiInMfNCjnMjsAjydmPWwhARtcTMCznOjcAiqNuNY7VCrTNX4boLmLm6HCWVNR6NjIjIOwxeyHFuBBax7cax52v9/ID/thvzzCMiovgYvJDj3Aosiobk4IV7RyI7o2UGJzujvfTbpOPhmUdERPGx5oVcEQssWtduZNtcu1E0JAcTBmcHYrtx0IuQiYjMYvBCrnErsPBqu7FejxajPVyCXIRMRGQFgxdyVVD7mOjtCDKzYyhWKxSuuxC37iXWeM9vRchERFax5oXIIr0dQcV/2m1qx1AQi5CJiOzA4IXIApEdQSv/X7XpHUNBK0ImIrIDl43IkkQ/i0dkR5DW6WEixxYYrRVK9J8JEQUfgxcyzenOr36YhO3a6aP3PKK1QuzGS0SJgMELmaJ2SnSsjsPqkoZfJmG7dvrY8TxO/0yIiGTBmhcyzOnOr7K2xI93OKJI92CtZJFdxxawGy8RJRIGL2SYk51fZZ2ESyprMHZxKaat3IE5ayswbeUOjF1cio27w7o7gmZ8NQ8hja/bsWOI3XiJKJEweCHDnOz8KuMkrJcJAqC5I2jBbYMd3zHEbrxElEhY80KGOdn5VbZJWC8TFMLlTNC2+eM0dwQ53V2Y3XiJKJEweCHDnOz8KtskbCQTVNC/q+aOICe7C4v+TEb16YKyqpNS7+AiItLD4IUMi3V+nbm6HCGgxWRptY5Dtpb4smWC1Ij8TL4xLAc3P7NF+h1cRER6WPNCpjjV+VW2lvhOZoLi7V6yQutn8uDX8vDi1mrpdnAREZkRUhSt/p/+E4lEkJGRgbq6OqSnp3s9nMBzqpGcLH1eGqMKxi4u1c0EbZs/ztD37eT31/pnMqpPlzYZFzu+ByIiOxmZvxm8kLS87LDb/LUPnKjHc5v2qS7HNM80iYxZrZlcvOezQ1nVSUxbuUP3ujUzRgfyxG8i8gcj8zdrXkhaThS4igYXrbMindOSAQCnz11q+lyXjsm4c3gvZHRIQWNUwcbdYd1siujupQmDs20L1PxSt0NEJIrBCyUMkaUataxI3T+DlrmFX0bd+YtYX3EUtfUX8evtB/Dr7QfQOS25RWAT07o1v9HdS3aQbQcXEZFVLNilhCBy5IBId99Vf6nGS9sPoLb+Youvxwtcmj8u1hXYiyyIyBEGdhxRQETkFgYvFHiiRw7s+PykblbklEqQoqV5NsWLLIhsO7iIiKxi8EKBJ7pUU1Z10tFxHD9zwbMsiFNb24mIvMCaFwo88SUYZzfe9ejU3tEGf3qcPqKAiMgtzLyQa+xuyiZKdAmmoF83zayIWa2zKV5mQWI7uKYM74WC/l0ZuBCRLzHzQq7wsumc6JEDo/t31c2KZKQlo+7cJeEcjVo2hVkQIiLzmHkhx4ns9HGSkYJVvazI09+8XvN5Yv1gWj8uXoDGLAgRkTnssEuOirXXN9KaXoYjB7TGoPU8zKYQEZkjzfEAW7duxTPPPINdu3ahpqYG69atwx133KH5mHfffRfz5s3Dp59+itzcXDz22GO47777hF+TwYtcjLamd3p5ya7AyMujC4iIgsjI/O3oslF9fT2GDRuG5cuXC11fXV2N22+/HbfeeisqKirw8MMP43vf+x7efvttJ4dJDjLSlM2N5SW7lmq45ENE5B1HC3YnTZqESZMmCV+/YsUK5OXl4dlnnwUADBo0CNu2bcNzzz2HiRMnOjVMcpDoTp9uX0rFf/zPX20784eZESKi4JJqt1FZWRkKCwtbfG7ixIl4+OGHVR/T0NCAhoaGpn9HIhGnhkcmiO70gQLbzvzxcmeTHgZVRETWSRW8hMNhZGVltfhcVlYWIpEIzp8/jw4dOrR5THFxMRYtWuTWEMkg0aZsJ+ob4jy6Lb1lKLWDFVsfkKhFhoJhIiJS5/ut0gsWLEBdXV3Tx+HDh70eErUi0pTNjjN/RM8w0mqOV1JZg7GLSzFt5Q7MWVuBaSt3YOziUsv1Nm5uF/eqGSARkVukyrxkZ2fj2LFjLT537NgxpKenx826AEBqaipSU1PdGB5ZoNeUTXR5SevMH9EzjHZUncSYAd3afN2OrE08ekGV0XoeLczuEFEikCrzUlBQgM2bN7f43MaNG1FQUODRiILFyh25HXfzWjt07Dj5WHRn06xX22Y6rGZttN4f0aBqZ3Wt0PjVeN0MkIjILY5mXs6ePYv9+/c3/bu6uhoVFRXIzMxE7969sWDBAhw5cgSvvPIKAOChhx7CsmXL8IMf/ADf/e53UVpait///vfYsGGDk8NMCFbuyN26m48tL7V+rWzB1xJdejp9/lKbTIqRAKN1wbDe+2Nku7hZbmZ3iIi85mjw8uGHH+LWW29t+ve8efMAANOnT8eqVatQU1ODQ4cONX09Ly8PGzZswNy5c7F06VJcffXV+NWvfsVt0nEYKSq1shzi1FKKGitn/ugtPbXWfDI3G2CIvD921PPosRJ8ERH5jaPByy233AKtBr6rVq2K+5iPPvrIwVH5n9E292bvyL26m48tL5l5XGxnk57Wk7mZAEP0/Xnv+7darueJvZ5aUOdGdoeISBZS1byQPqN1DVbqLdyq1bBTbOmpc4dk/YtxZTKPZW3UQrAQLgeIzQMM0fdn18FTlut59HZBuZHdISKSBYMXHzFTVGrljtzNu3k7t/cWDcnB8ntGCl0bm8zNFAwbeX9EtourEQlYzQRfRER+JdVWadJmpq7Byh25W3fzThQEj+7X1fBSjdGCYaPvj5l6HiNLdyLNAFmsS0RBwODFR8xkQqz0T7Gj94oepwqCRTv7tp7MjQQYZt4fo/U8RgJWq7u1iIj8gsGLjZw+t8ZMJsTsJG71sSKcLgg2O5mLBhhOvz+A8YDVym4tIiK/YPBiE7uXPuIFQmYzIVbuyJ28m3dje6/Tk7nT2Q6zAava+8WDIYkoCEKK1l5mH4pEIsjIyEBdXR3S09NdeU21pY/YlGB06UMrEALQtBU43p2+1mtZmbicmPRerziCOWsrdK9bOnU4pgzvZem1nOZUUNAYVTB2caluwLpt/jjd1+PRAUQkMyPzN4MXi2KTi1oGwcjkAogFQgACMQmVVZ3EtJU7dK9bM2N0QjdWi/1OAMYD1tbPYVeATURkNyPzN5eNLLJz6UO0BmTb/HGBqGtwoyA4CKwuTfHoACIKGgYvFtnZC0U0EHpu42cYc003XwYszblR8BoUVmp3eHQAEQUNgxeL7OyFIhoILduyH8u27PflUlFrQd/ea6QWRu9as8cm8OgAIgoaBi8W2bn0YbTZm1OHI7otqNt7jRTIOllMy6MDiChoeDyARWbayqvRa/HeWusjAexsse+2WFZhyvBeKOjfNRCBi+gZVEbPqzKKRwcQUdAweLGBlXNrmtMKhNTE6hWWle7TPLjPL/wcgMUYOYPKzHlVRtkZYBMRyYBbpW1kV6+PeEsIZsTbBitzkzK1pZP/nDQQx8404GDtOfTJTMO/FfRFylXOxd1W3yMjW8ABuLZdnH1eiEhm3CrtEbMFla01rwHZvv8LLNtSZep5Wm+D3bg7LO3kpdaHpKbuAma3amT34z/twYyv5mHBbYMdGYfV98iJAlk7immDWltERImHy0aSigVCcydca6gOprUry0r7Ha2rsEJr6SSeqAL8cms1iv+029Zx2FV7YqRA1u1i2nZJIeTnZaJHp/Y4fuby9mg/Ls0RUWJj5kVyer1QRKed32yvlrZJmV4fEjUr/181Hvn6QFuWkERqT3647hOcvxRFdrp2xsLoDjQ3G/Vx6YiIgoCZFx/QKgieW/hloec4ff6S6teaNynzgtklkagC/LbsgC1jEAmgausvYe5r+sXQRgpk2yWF8I1hOZpBqF3FtE7vaiIicgszLz6hVq8AAGs/OKR5557RIVkzeInxqkmZlSWRg7XnbBmD0e9dr8eOaPO9ksoavLi1WvV1Hvxani0ZER4RQERBwuDFR9QKgvVa7N8/pi+e27RP9/m9alKmt8yipU9mmi1jMPq9i0z4egWyIrU+b/y1Bj8oGmQ5oOARAUQUJFw2CgC9PjOzxw2QukmZmf42AJAUAv6toK8tYzDaIBAQW27Tar4nslRl13IejwggoiBh5iUg9O7yZT8AUW2ZRcut13bHroOnbNnuq1UYrcfshO9mQMEjAogoSBi8BIhWnxk/HIAYLwAr/dsx/HpbNeLt5t38ty+w+W9f2LZbxkwABZif8N0MKOw8g4uIyGvssJtgZO6wq+biP6L4bdkBbN33Bd777ESbr8frJGxF7D0K153HUxv24FT9Rc0Jf9v8cabew8aogrGLS3UDCrPP31pstxEQP/vm9wM+icjfjMzfrHlJMH48ADHlqiTcNyYPnx07G/frdp0BFBN7j+4ceTV+cucQAM6cCWTmzCEzZz/FHtPwjygeLhyArPTUFl83egYXEZHXuGxEjrA7w+PEbhmRMTq93Gbk+c00mIv3mOz0y/2B+nZLcyX75sdsHxHJjcEL2c6JLq52F7caGaPTZwKJbKleVrov7nZ3rX4zaudFHYtcwJJNn+GFe0c6vi2aHX2JyAlcNiJbOdXF1c7iVjNjjC0l/cvQngCAtz4+KrxsI0JtOa+ksgZjni5V7dOjtmQmctyBXctsatTe5xp29CUii5h5Ids42cXVrt0yVsbodhZBLXMSb9ytl8y8bkqn14BPATv6EpF5zLyQbYxMmEaZKW61c4xunwtk9KRtoOWSmZllNjPFwGrcbMBHRImHmReyjdNN1+wonjU7qbt9LpCZk7abL5kZXWbTyiqZqfcJ150Xen3R64iImmPwQrZxo+ma1eJZM2P0YgnGSIAXb8nMyDKb2vJUuO4CHlpdjs5pyTh97srBniJLZbX1F4XGLnodEVFzXDYi2+idD2TXGUpWetWYGaMX5wIZCfAUtF0yE11mA6Bb2Ns8cAHElsoyv5Sq+jUz1xERNcfgJQHYWcugxa66FCeZGaMX5wKZOSiyNb0DO4uG5JhanhLZrZSdLvZeiF5HRNQcl40Czu0dMn45Q8nIGL04F8jIQZFaNTd6y2xms0V6S2Wx90wrMPLyJHMi8jcGLwGmVcug1tjMDhMGZ6NT+2SUVZ0EoKCgXzeMluwoAiO1M1qBhJMZpViQ9cN1lZq1IXqBhNaBnVazRWrBT/P3LDbGmNh7OPUruXjr46PsuktEhjF4CSirO2TMtnSPl+n5Q/kRw1kXN1rKa03qrellayYMzkZZ1Unbx1s0JAfnLzZi7u//qnutmSyKXlZJj1bwo/aeZaQlA0CLxnvsuktERjB4CSgrO2TMLjXZlemRtaW8WrZm4+4wxi4udWy82RkdhK4zk0UxsjzVnOhSWev37MCJc1iy6TPXs4FEFCws2A0osztkzDZja4wqePKNTy23o3e7GZxRrXc6bdwddny8Tu/iUivs1RJvh5Oa5kcrrP3gkKdHFhBRMDB4CSgzO2SsnIezrHQ/wpEG1dcR6a4rw3k8Rrg1Xjd2cRUNycG2+eOwZsZoPHf3cGR2TNa8vnNaMiYMzjb0Gk52YCaixMLgJaDM3K1baZ3/3KbPhMZ1/MwF1a3bfpvc7BqvyFZ2kW3PVsUyJNnp7VFbf0nz2tPnLhn+OXjRL4eIgsmVmpfly5fjmWeeQTgcxrBhw/D8888jPz8/7rWrVq3C/fff3+JzqampuHCB/0MzwswOGSut80UdOHFOtT6k4R9Rw6/vJTsmYyP1PVa7C4tyKsjwol8OEQWT45mX1157DfPmzcPChQtRXl6OYcOGYeLEiTh+/LjqY9LT01FTU9P0cfDgQaeH6Wtqd+5G79adaJ3fXOe0ZCzZ9JlqfciBE/WGX99LVidjM/U9VroLi3IqyHCrAzMRBZ/jmZef//znmDFjRlM2ZcWKFdiwYQNeeuklPProo3EfEwqFkJ1tbD09UenduRu5WzfTjM3o3bfW1u01Ow8hO709jkXcawZnhZXmdV4c9ijqVL167VKMmSDDq345RBQ8jmZeLl68iF27dqGwsPDKCyYlobCwEGVlZaqPO3v2LPr06YPc3FxMmTIFn376qeq1DQ0NiEQiLT4Sheidu+jdupOt8//PyF5tzshpTgEQjjRgWn5vQ6/vJSuFtLLW9zRGFTy1YY/udY/fbu7n4EbtDhEFn6PBy4kTJ9DY2IisrKwWn8/KykI4HI77mGuvvRYvvfQSXn/9daxevRrRaBQ33XQT/v73v8e9vri4GBkZGU0fubm5tn8fMnJqp4vRyUXkDJ6cjPYYc003odfv2y3NV5Ob2clY1uJV0WXALh1TTL9G851NS6cOx5oZo7Ft/jjpfrZEJC/pmtQVFBSgoKCg6d833XQTBg0ahF/+8pd46qmn2ly/YMECzJs3r+nfkUjE0wDGjc6wgLUmdHqcaJ2f0UFssuvRqT0K+nd1pTDVLmYKaWUtXnUrqDLS3ZiIqDVHg5du3bqhXbt2OHbsWIvPHzt2TLimJTk5GSNGjMD+/fvjfj01NRWpqamWx2oHNzvDOj3J2Nk6v2hIDhqjiqH6EL9NbkbH68VhjyJkDaqIiJpzdNkoJSUFo0aNwubNm5s+F41GsXnz5hbZFS2NjY345JNPkJMjd0rZ7c6wsk0yeksBbjRa8xNZ3w/uCCIiP3B8q/S8efOwcuVKvPzyy9izZw9mzpyJ+vr6pt1H3/nOd7BgwYKm63/0ox/hnXfeweeff47y8nLce++9OHjwIL73ve85PVTTvOgMK+Mko1cYzGLNlmR8P2QNqoiImnO85uXuu+/GF198gSeeeALhcBjDhw9HSUlJUxHvoUOHkJR0JYY6deoUZsyYgXA4jC5dumDUqFH4y1/+gsGDBzs9VNOcrD9R49dtp241WvMLGd8PkWVAIiIvhRRFkeOgGJtEIhFkZGSgrq4O6enprrzmU29+il9vP6B73dKpwzFleC9bX1vWE5jJ/2LF5+HIBdSebUBmxxRkZ3TwPLgiomAyMn9Lt9vIb0oqa4QCF8CZ+hMZ79wpGNolhVB3/iJ+WvI308GxW7vviCixMHixQPRcH6d3jvhtZw5Z50ZQECtCb52ajRWh69XlMCtIRE5h8GKBaEMvBXLWn5A/uREUWD2+wGrgQ0SkxfHdRkEm2kPlu2P68n/UZAu3tuRbOb7Ai913RJRYGLxYIFrDMmEwD5kk69wMCqw0QZT13CYiCg4GLxbI2GuFgsvNoMBKE0RZz20iouBg8GIBG3qRm9wMCqwE5rJ1fyai4GHwYpGMXVIpmNwMCqwE5sxIEpHTuNvIBuy1Qm5w+zBHs512/dr9mYj8gx12iXwkttsIaBsUKLi8s23C4Gxbg2ezPWW0tnQz2Cei1ozM3wxeiHwmXlCQFAKabzKSpRlcvMBn4+4wm9cRURsMXhI8eGFL9uCL/Yw37Q7HPZ4i9tOWre5KrXmdrOMlIvfwbKMExpbsiaFdUgj5eZmY9/uKuF8X6YLrNqtde4mIYrjbyEGNUQVlVSfxesURlFWddLyjqFvdV0kOXjSDs/I7zeZ1RGQXZl4c4nYGhHe1icftZnBWf6fZvI6I7MLMi02a35Eu3bTP9QwI72rVuZ0Bc4ubfV/syOqxeR0R2YWZFxvEuyONx6kMSGNUwfb9J4SuTbS72iDXALnV98WurJ6T42WROlFiYebFIrU7UjV2Z0BKKmswdnEplm3ZL3R9It3VBr0GyK3jKezK6jk13tjfwLSVOzBnbQWmrdyBsYtLff/zJSJ1DF4s0Loj1WNHBsRI4JRoLdndPIHZS24cT2FnrYrd4w16gEpE8XHZyAK9O1ItVjMgRgKnRGzJbiRbUNC/q3sDc4DTx1PYXati13hZpE6UuBi8WGAme2JXHYKRwEnvLJogSrSdLe2SQo4FYU7Uqtgx3kQKUImoJS4bWWA0e2JnBkR00p19a39smz8uoQIXgDtb7ORWbY1RiRagEtEVDF4siN2Riv4v2846BNFJd8w13RMyZa73s0m0GiCr3KitMYoBKlHi4rKRBbE70pmry5tO9Y2J/Xtu4QD07dbR9joEt7bJ+pXezwbwZw2Ql1uCna6tMYp/A0SJiwcz2sCrXiKxnRZA/Mk5dkecyD0wgtTnJUjfi11E/waISH48VdqDU6W9ChD0JjROeMFoYMbTmNXxd5woGBi8eBC8eEltcuaEFwyNUQVjF5eq7qyJLY9smz/Od0GZXYIQoBIlOiPzN2teAiDetlP2wAgObgnW5+RWcSKSD4MXHxK5y+SEFxzcEkxEspAly8ngxUFO/JBF1/c54QUHtwQTkQxkqi9j8OIQJ37IajUssXNcmtewcMILDm4JvkKWuz6iRGNk/nEDm9Q5wInD4oweNMgmbcHhRIfbxqiCsqqTeL3iCMqqTvrigEqeHk3kDRkPumXwYjOnfshGalgAeVu6kzl2drj1YxDA06OJvGN0/nEDl41M0EpdO1Uoa6aGJTbhtV6+SsSDGoPAjg63sqV+RXDnHJG3ZKyhZPBikF4ti1M/ZLM1LLK1dCdrrGwJ9msQwJ1zRN6SsYaSwYsBInetTv2QrRRtsgcGAf4NAmS86yNKJDJuGmDNiyDRWpZRfbo4UijLGhayyq9BgIx3fUSJRMb5h8GLING71l0HTzn2Q7azaJMSj1+DAO6cI/KebPMPl40EGblrnTK8l2OFsqxhIbOspn7d7LHS+rUev30QZr36EUKIf3o0s45EzpNp/mHwIsjoXauTP2TWsJAZsdTvzNXlhoMANztrqr3Wg1/Lwxt/reHOOSIHiNycyNQkkqdKC4qd7Kt21woAmR2T8fi/XIfsdGZDSF5GAxE3TyfXe63l3x6JLh1TpPifJ1FQiPw/wY0bGCPztyvBy/Lly/HMM88gHA5j2LBheP7555Gfn696/f/8z//g8ccfx4EDBzBgwAAsXrwYt912m9BrORW8AFf+xwpANYCJ8eq8ByIRondQsaBdrd4rttS0bf44y0HExX9EMbp4E2rrLzn+WkR0mcjNCQBXbmCMzN+OF+y+9tprmDdvHhYuXIjy8nIMGzYMEydOxPHjx+Ne/5e//AXTpk3DAw88gI8++gh33HEH7rjjDlRWVjo9VF1qBUvxsPMnySy29DhleC8U9O+qGgy41VmzpLIGo4s3qwYudr4WEV0muov2yTc+lepoAMCF4OXnP/85ZsyYgfvvvx+DBw/GihUrkJaWhpdeeinu9UuXLkVRURG+//3vY9CgQXjqqacwcuRILFu2zOmhCikakoNt88dhzYzReO5fhyGzY0rc6/R+qH48W4YSjxvbq2N3frX1Fx1/LSK6QvTmJBxp0L3G7ZsKRwt2L168iF27dmHBggVNn0tKSkJhYSHKysriPqasrAzz5s1r8bmJEydi/fr1Tg7VkNhda1nVSc3/4ao1/ZLpWHEiLU5vr9a687P7tYioJTtvBNy+qXA083LixAk0NjYiKyurxeezsrIQDofjPiYcDhu6vqGhAZFIpMWHW8zclfKAOfITp3us6N352flaRNSSnTcCbt9U+L5JXXFxMTIyMpo+cnNzXXtto3elMh4rTqTF6c6aRu/W2M+FyD6iNyfZ6amaz+PFTYWjwUu3bt3Qrl07HDt2rMXnjx07huzs7LiPyc7ONnT9ggULUFdX1/Rx+PBhewYvwOhdqYzHihPpcbKzpugNQGbHZHaRJrKZ6M3JlOE9NZ/nG8NyXL+pcDR4SUlJwahRo7B58+amz0WjUWzevBkFBQVxH1NQUNDiegDYuHGj6vWpqalIT09v8eEWo3elfj1bhqh5ofrSqcOxZsZobJs/znIwoXcDAABdO6Zgx4JCBi5EDtC7OZkwOBtv/FW7nOGNv9a4vmLgeIfdefPmYfr06bjhhhuQn5+PJUuWoL6+Hvfffz8A4Dvf+Q569eqF4uJiAMCcOXNw880349lnn8Xtt9+OtWvX4sMPP8SLL77o9FBNif3gRY4C8OvZMkSAM52dRbr+/vjOIUi5yp0Vbpk6iBK5RasjfFnVSd26NC9Oo3c8eLn77rvxxRdf4IknnkA4HMbw4cNRUlLSVJR76NAhJCVd+R/TTTfdhFdffRWPPfYYfvjDH2LAgAFYv349hgwZ4vRQTRM9CkDGY8WJvGbkBsBJ3AVIQaYXmKvdnMi6YsDjAQTZdUem1qXXiVbrRH7iZdbDzSMQiNxmJTAvqzqJaSt36L7GmhmjLWdepDsewE1OBC9235HxDo9IHm4egUDkNquBud65fnb+fRiZv3mqtA61H3ysL4uZOzKZjhUn8orX9SWx19++/4TwLkCe5k5+oteeI4TL7TkmDM5W/duzchq9kxi8aLDjB6/GieJHIrPcDiS8zj7Ge3093AVIfmOkPYfWfCRLXVpzDF402PWDJ5KZ24GEE9lMO15fD3cBkt/YWWwr24qB7zvsOknWKmsiu7h9XIXXXabNnKXEYwnIr+xuzyF6Gr0bGLxoYF8WCjIvAgmvu0wbOUsJ8HZNn8gqp88m8xKDFw35eZnonJaseU2XtGRf/uCJvAgkvM5mGn1eO45AIPKK02eTeYk1LxYFap85JRQvAgmvs5mizzv71v4Yc0137gIk35Ox2NYODF407KyuxelzlzSvOX3uEgt2yZe8CCS87jIt+vpzJ1zLoIUCQ7ZiWztw2UiD1yluIid5sR7udRrb69cn8opMxbZ2YPCiwesUN5GTvJrI9U6xdTqN7fXrEzmtMaqgrOokXq84grKqk66f+OwGHg+gwc22yEReidfnpXNaMu6/KQ+zx13j2O+2LB12g5JGJwK8bwBpBc82svFsIx6kSImgMapgWek+/Gb7AZw+f6XOyy//0yMi/x8wamT+5rKRDqaYKRFs3B3Gkk37WgQugHPN6ojIXnb1bfLLkhN3GwkIYqU2UYyTZ3gRUdslylF9umDXwVO2zid2HGfjpyUnBi+CeJAiBRXP8CJyTryAICkENE9o2BEgWN0d6/WZY0Zx2YgowbElgD/4JZ1PV6idHdb6R2fH8qyV3bFenzlmBjMvRAmOLQHk56d0Pl1m5BBQO5ZnrTSA9GP2lZkXogQX5MPbzJAtw+H2yd9kD6OHgFo9S8xK3yYj2VdZ/j6YeSFKcLH/6c1cXY4Q4rcESJSus7JlOFhM7V9ml1mtLM+aPcdINKt64MQ5jF1cKsXfB4MXIgrs4W1GyFiw6Md0Pl1mdpnV6vKsmd2xIktOGWnJWLLpM2n+Phi8EBGAxG4JIGuGg8XU/qUXELRm56GkRnfH6mVfY/+W6e+DNS+CGqMKtu8/gZ+9vRc/e/tv2L7vhOdr4UR28+PhbXaswRvJcLiJxdT+pVWD0poMy7NaDVnnFg7A6XOXVB7pzd8HMy8CSipr8OgfP2nxw1u2pQqd05Lx9DevT4iUOpEbjJ43pFaj8vjtg9GlY4rw88ia4bCyg4S8p7Yc27rPiyzLs2rZ17c+Pir0eDf/Phi86CiprMFD/zzbqLXT5y7hodXlWCFZ8x4iPzJaLKtWo1JTdwH/99WWf7N6RYWyZjhYTO1/8QICJzrs2iXekpOMfx9cNtLQGFXw5Bu7da978o1PuYREZIHR7cBGemhoPU+MzNvFeb6a/7Vejk25KslXy7My/n0w86JhZ3UtwhH9NFg40sBqfyKTzBTLmumhoVVUaDTDYXR5y6pELqYm78mYAWTwosHI+h2r/YnMMbMd2Mzfm962YtHt4l71guH5auQl2dopMHjRYGT9jtX+ROaYKZa18vem9Xp6GQ4Ze8GQvdzOqvmJTBlABi8a8vMykZ3eXnfpKDs9ldX+RCaZKQY02kPDyOupZThk7QVD9pGtw7KMZMkAsmBXQ7ukEJ78xmDd6578xnX8nxWRSWaKAY300GjOyo2GrL1gyB4ynSEly/lBMmPwoqNoSA5W3DsSndOS23ytc1oyt0kTWWT2QDm1XThapuX3Nn2jIWsvGLJOL6sGXM6quRFElFTWYOziUkxbuQNz1lZg2sodGLu4lAdwtsJlIwGxdb4dn59EWdVJAAoK+nXDaB9scSPyA7PFgLG/zec2foZlW/brvk7fbh1Nj1HGXhcy8XOtiCxnSLGmShyDF0HtkkIYc003jLmmm9dDIQoks8WAsb9NkeDFSmDBbrfq/F4rIkNWjTVVxnDZiIikYfZsJTubaKnVG5hd3go6mWpFzHIrq6ZVy8KaKmOYeSEi37OriZZeBsHI8pafl1FEBSVb4EZWTe93S4bsT4wffncZvBBRIFhtoiVab1A0JAfjBmbht2UHcLD2HPpkpuHfCvoi5aqkFs/l52UUUbLUiljldAdZkd8tGWqqGqMKlpXux2+2V+P0+SsHEcv4uxtSFCVQe7AikQgyMjJQV1eH9PR0r4dDRC4zc9fYGFUwdnGp6kQcu/PeNn8cNu4OawYmahNVbARBKrp8veII5qyt0L1u6dThmDK8l/MDssiJoFP0d+u979+Km5/Zopv92TZ/nCNZkJLKGjz6x09w+tylNl9z63fXyPzNzAsRBYqZJlqiGYRlpfuwZNM+1Tvo5d8egac27PH9MoooGbIFdnKig6zo79aug6c8Oz+opLIGD60uV/26jL+7LNglooQnWkfwy62fa/YCeez1SqGJasfnJw2PUUYynjZsldmicTVGalm8OEE8VrekR7aCYWZeiCjhiWYGzl1sVP2aAqC2vm3KPZ5ZvyvH09+63tRkJFMxpYynDcvGaHbK7fODjJ7QLksTRgYvRJTwrJyVZMbp85dMNR2TsRBYttOGZWNmJ5MT5wepBb1GgxFZlgAdXTaqra3FPffcg/T0dHTu3BkPPPAAzp49q/mYW265BaFQqMXHQw895OQwiSjBxTIIdgQumR1ThM9bMtJyXuZ+KkVDcrBt/jismTEaS6cOx5oZo7Ft/riED1wAOfoDaR05YCQYkWkJ0NHg5Z577sGnn36KjRs34q233sLWrVvx4IMP6j5uxowZqKmpafr46U9/6uQwiYhQNCQH3x3T1/TjY/Ud/zVliND1RmoIZDp7R43dtSJB4kUtS4xe0HuqvkGzbikmBLmWAB1bNtqzZw9KSkrwwQcf4IYbbgAAPP/887jtttvws5/9DD179lR9bFpaGrKzs50aGhElCKP1IeMHZuGl7QcMv07zO+iiITl4IWkkHv3DJy16ZagRSdsHpZ9KInO7lgUQayL41IY9ePz2wZj1atu6pZguacko/qa5Gi2nOBa8lJWVoXPnzk2BCwAUFhYiKSkJ77//Pu68807Vx/7ud7/D6tWrkZ2djcmTJ+Pxxx9HWlpa3GsbGhrQ0NDQ9O9IJGLfN0FEvmWqPkRwHumSloxTzfphtK7vKBqSg06pybjn1+/rPpdI2l6m7qtknhO1LFpEg94uHVPi1i117pCM+8f0xexxA6TJuMQ4FryEw2H06NGj5YtddRUyMzMRDodVH/ftb38bffr0Qc+ePfHxxx9j/vz52Lt3L/74xz/Gvb64uBiLFi2ydexE5G9mT+c9cbahzefieWLydchOb695B10nkHURrSEIWj8VcoeRoHfK8F6uZ4asMBy8PProo1i8eLHmNXv27DE9oOY1Mddffz1ycnIwfvx4VFVVoX///m2uX7BgAebNm9f070gkgtzcXNOvT0T+ZuW8HdHJPzu9veYddGNUwVMb9HtnPH77IKHJgSdakxlGg163M0NWGA5eHnnkEdx3332a1/Tr1w/Z2dk4fvx4i8//4x//QG1traF6lhtvvBEAsH///rjBS2pqKlJTU4Wfj4iCzUp9iF1BgmjvjC4dxf7fxX4qiclqT58gB72Gg5fu3buje/fuutcVFBTg9OnT2LVrF0aNGgUAKC0tRTQabQpIRFRUVAAAcnLkKRQiInlZqQ+xK0hwokaF/VQSi9GaLbVAJ6hBr2M1L4MGDUJRURFmzJiBFStW4NKlS5g9ezamTp3atNPoyJEjGD9+PF555RXk5+ejqqoKr776Km677TZ07doVH3/8MebOnYuvfe1rGDp0qFNDJaIAsVofIhIk6N0RO1Wj4sWOFXKf0ZotvUAniEGvox12f/e732H27NkYP348kpKS8K1vfQu/+MUvmr5+6dIl7N27F+fOnQMApKSkYNOmTViyZAnq6+uRm5uLb33rW3jsscecHCYRBYgdqXKtIEHkjtjJdL2f6hIShZ1HNhit2RINdIIW9IYURfGuq5EDjBypTUTBFPsfOhA/VW62MZjaRBHveZ0aA8nF7iMbyqpOYtrKHbrXrZkxGvl5mRi7uFS1vioWJG+bP84XgYqR+ZunShNR4DjR0VTvjlhByy63XnZVJXeoda+tqbuAh1aXY+mmfYa7HhuplzJSnB40PJiRiALJ7lS5yA6i1ruYgpiup8u0gtmY5zZ9hjU7D+LJb1wnHKwaqZdK5OaFDF6IKLDsrA8JR8QmgNbXsUYlmES3w4cjDXhodTnmFg5A324ddQNYI/VSy0r3CY01iM0LGbwQEQmoFey+K3od+ZvRbMZzm64EGlo1MaLbmzfuDrd4znj83MdFD2teiIgEZHZMsfU68jcr2YzYTqCSypq4X9erl5owOBuL3tTv4Az4t4+LHmZeiIgE9EgXrEUQvI78TW95R0vrLc8A2tRFadVLlVWdFFqyerjwy4EtDGfwQkQkQnSGClTzCVLTfHnHjNhOoGWl+7D2g8OqW63j1UuJLln17ZZmamx+wGUjIiIBJ+rFallEryP/a1resZBte27TvjZZFL1lJSsdnBujCsqqTuL1iiMoqzppeCu3LJh5ISISYHfLfzu7spJ3Yss7y0r36RbQitI7/dxsB2e7G+p5iZkXIiIBsQlDLbwI4fJEILKzo6SyBmMXl2Layh2Ys7YC01buwNjFpap32iSnWBbjrY+PIj+vK/772yOQk2FPzZNWg7nYkhWANr+PagcuqjXU08vyyIrBCxGRADMTRjxBm0QSVbwA9KkNe/CfkwbZuuNMrb7FSAdnve7QQMvu0H7AZSMiIkFWT+g1eugeyUnrMMTZaz8Seo7/M/Jq/G/533Wv01qGFO3gbOQYAb80VGTwQkRkgJWW/1YmEdbIyEEkiyFizIBu2F51wvLJ4yIdnIN4jACDFyIig8y2/Dc7iQSp0NLvRI8F0FN1/AymfiUXz23ap9lJ144A1e5icxkweCEicsmBE+eErms+iWgtUcxcXe7aCdWJkPkR+R7tyk4s21IFAOiclgwAOH3uUtPXRJchRZndnSQzBi9ERC5ojCpYs/OQ7nXZ6alNk4gsNTKJkPkR/R6NZCdaZ1Tiqftn0DK38Mvo2y3NkcBQ9LwkPwWj3G1EROSCndW1QidTT8vv3TSJGKmRcUoi7I4y8j2Kbpn/72+33QkUTyyQWPvBIfzL0J4o6N/VkSDCyO4kP2DmhYjIBeIt3TsafoxThZayZH6cZPR7FM1iFA3JwcQhlwu7t+8/gWVb9quOwa3dPlaKzWXDzAsRkQvMFE16XWgpQ+bHaWa+R9EsRqywe0DWl4TG4sZun9iYpgzv5ViWxw3MvBARucBM0aTXhZZeZ37cYPZ7NJLF8DoIDSJmXoiIXGCmQ69dXX3NSoRJ18r3KJrFsPNoCbqMwQsRkUvMFE16WWgpMul27ZiCcN15X5xQHO9EZTcCC6+D0CAKKYoi92+bQZFIBBkZGairq0N6errXwyEiasNMzxSv+qzEduIA+tt+ndg+bdf3HW8rdHZ6e0zL74268xfx0vYDqgW4dgWJXm85l71Xj5H5m8ELEVGCMDt5/enjGjz2eiVq6y9qXheb/OcWDkDfbh0tT5B2TfZqjf5aSwoBzZNHMgdjRnkdOIlg8MLghYioBbOTV7zHiTRfM/Iaaq+rFXD897dH4LahPXWfpzGqYOziUkMt/R8Y0xeFg7Oly0yYpfZe2p1ZssrI/M2aFyKiAGuMKli6aR8eMtFoTq15m5E7XjPN7LR6r8TMXvMR/vSx/nMaPYsoBGB9xVGE685jZ3WtoTqeeDU1XhM5SHLRm7ulGKsR3CpNRBRQJZU1ePKNTxGONMT9ulajOZEAQkS819BbOhEJOKIK8H9fLceKJO2sgdFt3AqAk/UXMff3fwUgnjmSdVnGyknmMmPwQkQUQKJ1HmqTl12nJ7d+jbrzF3UneSMBh16HX6vbuEUOwJTl8Mx4gtqrh8tGREQBYyZr0nrycmIy27g7LHSGkJGAo6buAp7buFd1mUZvK7QevaUV2Zdlgtqrh8ELEVHAmMmatJ68nJjM1lccFZrkYwGHqGVbqjBt5Q6MXVzaprZGq8eKKK1jEJw4QsHO2pmgNshj8EJEFDBGsiZqk5dIxkJ0I04IQGbHZM2t1s0n+eYBhxFqxcFqjf6Mive+2r0sU1JZg7GLSzFt5Q7MWVuhGpSJCmqDPAYvREQBYzRrEm/y0pv0QgCWTRuBNTNGY+nU4Zhb+OWmz7e+FgDuHN5LaCzHz1xAY1RBRocU3H9TH4QMzKlayzRFQ3Kwbf64ZuMdgOz0VPEnR/z31c5lGbXdXWZ2bDXnZZdmp7Bgl4jI51rv3hnVp4vmgY4xerthYpNem860Ko+7NvtLqtdmdEjBr7cf0P1eDpw4Z7gvS3Nau2diZxHFzB43ADuraxGOXMBTb32K2vpLcZ9T6wBMuw7P1KudUdsVJsrIQZJ+wOCFiMjH1LbofmNYDl7cWq3aUG5u4QDMHjdAd/IyMulpXdsYVXQn+Yy0ZCzZ9Jnl7dmA2DJN82CmQ3JS3GMQ9JZWYhmqmavLVY8XEFmWcWNLc+vgzc+4bERE5FNaywwvbq3Gg1/La7NUkJPRHivuHYk5hV8WvusWPT1Z61q9ZajYpK8VuGR2TMasW/oLjdno0pmVpRU7lmWCuqXZKcy8EBH5kMgywxt/rcF7378Vuw6ekmKpQGsZaupXcvHcpn2aj6+tv4SbrumGP350xPIyjdr4zC6tWF2WCeqWZqcweCEi8iHRZYZdB09JtVSgNsn/eMNuocefONtgyzKNGitLK1Yea1ftTKLgshERkQ/5eZmh9dIScLkHjIgendoHcvdMULc0O4WZFyIiHwrSMsPO6lrNHjAxmR2TmzIPQds9Axjf3ZXIGLwQEfmQ35YZtA5jFM0O3Tm8V4vgxA+7Z/QOoWwtiEGZExi8EBH5kF1bdN2gd+KyaHaocHC2U0N0hNmTpv0QlHmNNS9ERJJTO+vGSu2HkfNzrJy1I9I1Nojn7zjVLZcucyzz8uMf/xgbNmxARUUFUlJScPr0ad3HKIqChQsXYuXKlTh9+jTGjBmDF154AQMGDHBqmEREUtO7ezezzGAkI2A2ewAY6xrrlyySCKe75ZKDmZeLFy/irrvuwsyZM4Uf89Of/hS/+MUvsGLFCrz//vvo2LEjJk6ciAsX5KuWJyJymujdu5EmckYyAlazB0a6xgZpB5ETJ01TS45lXhYtWgQAWLVqldD1iqJgyZIleOyxxzBlyhQAwCuvvIKsrCysX78eU6dOdWqoRETSceLu3chz4p//beX1RQtxt+//Avl5mYEpVvXzNna/kKbmpbq6GuFwGIWFhU2fy8jIwI033oiysjLVxzU0NCASibT4ICLyOyfu3o08px2vL1qIu2xLFcYuLkVJZY2hLJKsgrSNXVbSBC/hcBgAkJWV1eLzWVlZTV+Lp7i4GBkZGU0fubm5jo6TiMgNTty9G3lOO15frxC3uSAVsgaxAFk2hoKXRx99FKFQSPPjb3/7m1NjjWvBggWoq6tr+jh8+LCrr09E5AQn7t6NPKcdr6/VNbY15Z8f/7muEhf/ERV67Xis7IyyC7vlOs9QzcsjjzyC++67T/Oafv36mRpIdvblNdZjx44hJ+dKYdaxY8cwfPhw1celpqYiNTXV1GsSEcnK7iZ0jVEFUUVB5w7JOH3+UtxrWj+nHa+v1jVWzcn6ixhdvAk/ufN6w0W6VnZG2Y3dcp1lKHjp3r07unfv7shA8vLykJ2djc2bNzcFK5FIBO+//76hHUtEREEQu3t/aHV53K8rEL97jzeptxYvI2DX9uWiITkYNzALI556B/UNjbrX19ZfwszV5cK7jBqjCpaV7sdzmz5r87XYcpQXO5aCUoAsI8dqXg4dOoSKigocOnQIjY2NqKioQEVFBc6ePdt0zcCBA7Fu3ToAQCgUwsMPP4z/+q//whtvvIFPPvkE3/nOd9CzZ0/ccccdTg2TiCjQ1LY7txZvS7Kd25d3HTwlFLg0t+jN3brLPiWVNRjz9Oa4gQtwJegSeS4nBKEAWUaObZV+4okn8PLLLzf9e8SIEQCALVu24JZbbgEA7N27F3V1dU3X/OAHP0B9fT0efPBBnD59GmPHjkVJSQnat2dFNhEllti2ZjWxrcrjBmZh18FTce/stbZGx3ROS8byaSMxWmVitSt7YHRbcPPdTGqt8mOBmV5IIvJc5C+OBS+rVq3S7fGiKC1/5UKhEH70ox/hRz/6kVPDIiLyBdGtyqOLN6G2/koNS/MaD73nAIDT5y4hKSmkGYzYcdaO2W3BakGPSGAm+lzkP9JslSYioitEJ9rmgQvQcsuxTM3SjGybbk4t6BEJzESfi/yHwQsRkYTMTrTNazy6dRTbienGpG5k23TsGq1eKEYCLvZVCR4GL0REEjKbqQCuLCkhBKFmaaP6dHGlN4paAXC8cQHau5mMBlzsqxIsIaV14YnPRSIRZGRkoK6uDunp6V4Ph4jItFhBKgBDtR0xS6cOR+pVSXGfIzaNP/i1PLzx1xpXe6M0RpWmAuADJ85hzc5DCEeMvX5jVMHYxaWqfWiMPBfJwcj8zeCFiEhi8Xq0dO2YgpP1F3Ufu2bGaBT07xr3OTI7JmNEbmds/tsXbR4XC2zc6o3SPJgxsptJL7ibWzgAs8cNYMbFJxi8MHghogBpPbmP6tMFNz+zRbf77bb541psm95ZXYuNu8NYX3EUtTrBT7znkJFMXXXJGiPzt2NbpYmIyB7xtiob7X7bLimEuvMX8ZvtB4SWoPzSG4VdbBMTgxciIh8yenaOmb4ogD96o9jRh4b8hcELEZFPGck6mOmLArA3CsmJwQsRkY+JZh2MZlCMnlpN5Cb2eSEiSgBGMihGT40mchuDFyKiBGCk6V1GWrJr26SJzGDwQkSUAIy05687d0nnCjKrMaq40s046FjzQkSUIGI7lJ58Y3eLjrbxLHpzNyYMzuaykY3Yk8Y+zLwQESWQoiE5ePauYZrXNO/xQvaIdQNuveOr+SngJI7BCxFRgjlR3yB0nR96vPiBVo+d5qeAcwlJHIMXIqIEI7rziD1e7KHXY4eZLuMYvBARJRi9nUchXK7FYI8Xe4hmsJjpEsfghYgowWjtPPKyx0tQd+Iw02U/7jYiIkpARs9GclqQd+LEMl16p4Az0yUupChKMELbfzJypDYRUaJrjCqen8gc24nTejKKjSIIDfNi3yMQ/xTwIHyPVhmZvxm8EBGRZxqjCsYuLlUtaI1lJbbNHxc3qLISfLkduAU5u2QHI/M3l42IiAJOhuyKGiM7cVofQGklGPAikDByCjhpY/BCRBRgst/tm92Jo7bUFGv6prUMY+WxVomeAk7auNuIiCigZOzq2npHUbcvpQo9rvlOHCtN39gwLhiYeSEiCiC9SToE988vipcFyk5PRee0ZNSduyS8E8fKUpOVx5I8mHkhIgog2bq6qmWBjkUacPqfgYtozxkrTd/YMC4YGLwQEQWQTJO0SBaoc1oystJbNmnLzmgft/7EStM3NowLBi4bEREFkEyTtEgW6PS5S/jdAyORlBTS3YljpekbG8YFAzMvREQBJNP5RaLZnRP1DSjo3xVThvdCQf+uqrU4Vo43kPVoBDKGwQsRUQDJNEmLZncOnDgn/Jyx4w2yM8SWmux6LMmBHXaJiAJMhj4vjVEFY57ejHCkQfO6HI1OulrP7ZcOu6SNxwMweCEiaiLDJL1002d4btM+3evWzBjNLcoJiscDEBFRExm6uvbt1lHoOm5RJhGseSEiIsfJtPuJ/I/BCxEROU6m3U/kfwxeiIjIcTLtfiL/Y/BCRESu4BZlsgsLdomIyDVFQ3IwYXC257ufyN8YvBARkatk2P1E/sbghYjIJ2To10IkA8dqXn784x/jpptuQlpaGjp37iz0mPvuuw+hUKjFR1FRkVNDJCLyjZLKGoxdXIppK3dgztoKTFu5A2MXl6KkssbroRG5zrHg5eLFi7jrrrswc+ZMQ48rKipCTU1N08eaNWscGiERkT+UVNZg5uryNiczh+suYObqcgYwlHAcWzZatGgRAGDVqlWGHpeamors7GwHRkRE5D+NUQWL3tyNeOe4KLi8zXjRm7sxYXA2l5AoYUi3Vfrdd99Fjx49cO2112LmzJk4efKk10MiIvLMzuraNhmX5hQANXUXsLO61r1BEXlMqoLdoqIifPOb30ReXh6qqqrwwx/+EJMmTUJZWRnatWsX9zENDQ1oaLhyUmkkEnFruEREjhM968fJM4FYKEyyMRS8PProo1i8eLHmNXv27MHAgQNNDWbq1KlN/3399ddj6NCh6N+/P959912MHz8+7mOKi4ublqiIiILG6zOBSiprsOjN3S2yPzkZ7bFw8mA2lSPPGFo2euSRR7Bnzx7Nj379+tk2uH79+qFbt27Yv3+/6jULFixAXV1d08fhw4dte30iIq95eSYQC4VJVoYyL927d0f37t2dGksbf//733Hy5Enk5KhH96mpqUhNTXVtTEREboqdCTRzdTlCQIvCXSfPBGKhMMnMsYLdQ4cOoaKiAocOHUJjYyMqKipQUVGBs2fPNl0zcOBArFu3DgBw9uxZfP/738eOHTtw4MABbN68GVOmTME111yDiRMnOjVMIiLpeXEmEAuFSWaOFew+8cQTePnll5v+PWLECADAli1bcMsttwAA9u7di7q6OgBAu3bt8PHHH+Pll1/G6dOn0bNnT3z961/HU089xcwKESU8t88EkqFQmEiNY8HLqlWrdHu8KMqVhGSHDh3w9ttvOzUcIiLfc/NMIK8LhYm0SNfnhYiIvOdloTCRHgYvRETURqxQGECbAMbJQmEiEQxeiIgoLi8KhYlESNVhl4iI5OJ2oTCRCAYvRESkyc1CYSIRXDYiIiIiX2HwQkRERL7C4IWIiIh8hcELERER+QqDFyIiIvIVBi9ERETkKwxeiIiIyFcYvBAREZGvMHghIiIiXwlch11FUQAAkUjE45EQERGRqNi8HZvHtQQueDlz5gwAIDc31+OREBERkVFnzpxBRkaG5jUhRSTE8ZFoNIqjR4+iU6dOCIWsHxwWiUSQm5uLw4cPIz093YYRBhPfJ318j8TwfdLH90gM3ycxsrxPiqLgzJkz6NmzJ5KStKtaApd5SUpKwtVXX23786anp/OXXwDfJ318j8TwfdLH90gM3ycxMrxPehmXGBbsEhERka8weCEiIiJfYfCiIzU1FQsXLkRqaqrXQ5Ea3yd9fI/E8H3Sx/dIDN8nMX58nwJXsEtERETBxswLERER+QqDFyIiIvIVBi9ERETkKwxeiIiIyFcYvOhYvnw5+vbti/bt2+PGG2/Ezp07vR6SVLZu3YrJkyejZ8+eCIVCWL9+vddDkk5xcTG+8pWvoFOnTujRowfuuOMO7N271+thSeeFF17A0KFDmxplFRQU4M9//rPXw5La008/jVAohIcfftjroUjlySefRCgUavExcOBAr4clnSNHjuDee+9F165d0aFDB1x//fX48MMPvR6WEAYvGl577TXMmzcPCxcuRHl5OYYNG4aJEyfi+PHjXg9NGvX19Rg2bBiWL1/u9VCk9d5772HWrFnYsWMHNm7ciEuXLuHrX/866uvrvR6aVK6++mo8/fTT2LVrFz788EOMGzcOU6ZMwaeffur10KT0wQcf4Je//CWGDh3q9VCkdN1116GmpqbpY9u2bV4PSSqnTp3CmDFjkJycjD//+c/YvXs3nn32WXTp0sXroYlRSFV+fr4ya9aspn83NjYqPXv2VIqLiz0clbwAKOvWrfN6GNI7fvy4AkB57733vB6K9Lp06aL86le/8noY0jlz5owyYMAAZePGjcrNN9+szJkzx+shSWXhwoXKsGHDvB6G1ObPn6+MHTvW62GYxsyLiosXL2LXrl0oLCxs+lxSUhIKCwtRVlbm4cjI7+rq6gAAmZmZHo9EXo2NjVi7di3q6+tRUFDg9XCkM2vWLNx+++0t/v9ELe3btw89e/ZEv379cM899+DQoUNeD0kqb7zxBm644Qbcdddd6NGjB0aMGIGVK1d6PSxhDF5UnDhxAo2NjcjKymrx+aysLITDYY9GRX4XjUbx8MMPY8yYMRgyZIjXw5HOJ598gi996UtITU3FQw89hHXr1mHw4MFeD0sqa9euRXl5OYqLi70eirRuvPFGrFq1CiUlJXjhhRdQXV2Nr371qzhz5ozXQ5PG559/jhdeeAEDBgzA22+/jZkzZ+Lf//3f8fLLL3s9NCGBO1WaSGazZs1CZWUl199VXHvttaioqEBdXR3+93//F9OnT8d7773HAOafDh8+jDlz5mDjxo1o376918OR1qRJk5r+e+jQobjxxhvRp08f/P73v8cDDzzg4cjkEY1GccMNN+AnP/kJAGDEiBGorKzEihUrMH36dI9Hp4+ZFxXdunVDu3btcOzYsRafP3bsGLKzsz0aFfnZ7Nmz8dZbb2HLli24+uqrvR6OlFJSUnDNNddg1KhRKC4uxrBhw7B06VKvhyWNXbt24fjx4xg5ciSuuuoqXHXVVXjvvffwi1/8AldddRUaGxu9HqKUOnfujC9/+cvYv3+/10ORRk5OTpubgkGDBvlmeY3Bi4qUlBSMGjUKmzdvbvpcNBrF5s2buQZPhiiKgtmzZ2PdunUoLS1FXl6e10PyjWg0ioaGBq+HIY3x48fjk08+QUVFRdPHDTfcgHvuuQcVFRVo166d10OU0tmzZ1FVVYWcnByvhyKNMWPGtGnZ8Nlnn6FPnz4ejcgYLhtpmDdvHqZPn44bbrgB+fn5WLJkCerr63H//fd7PTRpnD17tsXdTHV1NSoqKpCZmYnevXt7ODJ5zJo1C6+++ipef/11dOrUqalmKiMjAx06dPB4dPJYsGABJk2ahN69e+PMmTN49dVX8e677+Ltt9/2emjS6NSpU5taqY4dO6Jr166soWrmP/7jPzB58mT06dMHR48excKFC9GuXTtMmzbN66FJY+7cubjpppvwk5/8BP/6r/+KnTt34sUXX8SLL77o9dDEeL3dSXbPP/+80rt3byUlJUXJz89XduzY4fWQpLJlyxYFQJuP6dOnez00acR7fwAov/nNb7wemlS++93vKn369FFSUlKU7t27K+PHj1feeecdr4clPW6Vbuvuu+9WcnJylJSUFKVXr17K3Xffrezfv9/rYUnnzTffVIYMGaKkpqYqAwcOVF588UWvhyQspCiK4lHcRERERGQYa16IiIjIVxi8EBERka8weCEiIiJfYfBCREREvsLghYiIiHyFwQsRERH5CoMXIiIi8hUGL0REROQrDF6IiIjIVxi8EBERka8weCEiIiJfYfBCREREvvL/AQ8Nx83DArYPAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_samples, y_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SimpleMLP(eqx.Module):\n",
    "    layers: List[eqx.nn.Linear]\n",
    "\n",
    "    def __init__(self, layer_sizes, key):\n",
    "        self.layers = []\n",
    "\n",
    "        for (fan_in, fan_out) in zip(layer_sizes[:-1], layer_sizes[1:]):\n",
    "            key, subkey = jax.random.split(key)\n",
    "            self.layers.append(\n",
    "                eqx.nn.Linear(fan_in, fan_out, use_bias=True, key=subkey)\n",
    "            )\n",
    "    \n",
    "    def __call__(self, x):\n",
    "        a = x\n",
    "        for layer in self.layers[:-1]:\n",
    "            a = jax.nn.sigmoid(layer(a))\n",
    "        a = self.layers[-1](a)\n",
    "\n",
    "        return a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = SimpleMLP(LAYERS, key=key)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7efba07933a0>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Initial prediction\n",
    "plt.scatter(x_samples, y_samples)\n",
    "plt.scatter(x_samples, jax.vmap(model)(x_samples))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def model_to_loss(m, x, y):\n",
    "    prediction = jax.vmap(m)(x)\n",
    "    delta = prediction - y\n",
    "    loss = jnp.mean(delta**2)\n",
    "    return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array(0.61819804, dtype=float32)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_to_loss(model, x_samples, y_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_to_loss_and_grad = eqx.filter_value_and_grad(model_to_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Array(0.61819804, dtype=float32),\n",
       " SimpleMLP(\n",
       "   layers=[\n",
       "     Linear(\n",
       "       weight=f32[10,1],\n",
       "       bias=f32[10],\n",
       "       in_features=1,\n",
       "       out_features=10,\n",
       "       use_bias=True\n",
       "     ),\n",
       "     Linear(\n",
       "       weight=f32[10,10],\n",
       "       bias=f32[10],\n",
       "       in_features=10,\n",
       "       out_features=10,\n",
       "       use_bias=True\n",
       "     ),\n",
       "     Linear(\n",
       "       weight=f32[10,10],\n",
       "       bias=f32[10],\n",
       "       in_features=10,\n",
       "       out_features=10,\n",
       "       use_bias=True\n",
       "     ),\n",
       "     Linear(\n",
       "       weight=f32[1,10],\n",
       "       bias=f32[1],\n",
       "       in_features=10,\n",
       "       out_features=1,\n",
       "       use_bias=True\n",
       "     )\n",
       "   ]\n",
       " ))"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_to_loss_and_grad(model, x_samples, y_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt = optax.sgd(LEARNING_RATE)  # Here you could also use optax.adam(...)\n",
    "opt_state = opt.init(eqx.filter(model, eqx.is_array))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "@eqx.filter_jit\n",
    "def make_step(m, opt_s, x, y):\n",
    "    loss, grad = model_to_loss_and_grad(m, x, y)\n",
    "    updates, opt_s = opt.update(grad, opt_s, m)\n",
    "    m = eqx.apply_updates(m, updates)\n",
    "    return m, opt_s, loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 0, loss 0.618198037147522\n",
      "Epoch 100, loss 0.5929845571517944\n",
      "Epoch 200, loss 0.5906002521514893\n",
      "Epoch 300, loss 0.5868180394172668\n",
      "Epoch 400, loss 0.5801002383232117\n",
      "Epoch 500, loss 0.566866934299469\n",
      "Epoch 600, loss 0.5378221869468689\n",
      "Epoch 700, loss 0.46953481435775757\n",
      "Epoch 800, loss 0.34839046001434326\n",
      "Epoch 900, loss 0.280775249004364\n",
      "Epoch 1000, loss 0.26581865549087524\n",
      "Epoch 1100, loss 0.25935813784599304\n",
      "Epoch 1200, loss 0.25403133034706116\n",
      "Epoch 1300, loss 0.2487192302942276\n",
      "Epoch 1400, loss 0.24320776760578156\n",
      "Epoch 1500, loss 0.2374759465456009\n",
      "Epoch 1600, loss 0.23156489431858063\n",
      "Epoch 1700, loss 0.22554267942905426\n",
      "Epoch 1800, loss 0.21948927640914917\n",
      "Epoch 1900, loss 0.21348616480827332\n",
      "Epoch 2000, loss 0.20760928094387054\n",
      "Epoch 2100, loss 0.20192395150661469\n",
      "Epoch 2200, loss 0.19648192822933197\n",
      "Epoch 2300, loss 0.1913195699453354\n",
      "Epoch 2400, loss 0.1864566057920456\n",
      "Epoch 2500, loss 0.18189576268196106\n",
      "Epoch 2600, loss 0.17762385308742523\n",
      "Epoch 2700, loss 0.1736137419939041\n",
      "Epoch 2800, loss 0.16982711851596832\n",
      "Epoch 2900, loss 0.16621753573417664\n",
      "Epoch 3000, loss 0.16273334622383118\n",
      "Epoch 3100, loss 0.15932023525238037\n",
      "Epoch 3200, loss 0.15592458844184875\n",
      "Epoch 3300, loss 0.1524965465068817\n",
      "Epoch 3400, loss 0.14899498224258423\n",
      "Epoch 3500, loss 0.14539383351802826\n",
      "Epoch 3600, loss 0.1416902095079422\n",
      "Epoch 3700, loss 0.13791446387767792\n",
      "Epoch 3800, loss 0.13413752615451813\n",
      "Epoch 3900, loss 0.1304713636636734\n",
      "Epoch 4000, loss 0.1270558387041092\n",
      "Epoch 4100, loss 0.12402958422899246\n",
      "Epoch 4200, loss 0.1214936226606369\n",
      "Epoch 4300, loss 0.11948348581790924\n",
      "Epoch 4400, loss 0.11796499043703079\n",
      "Epoch 4500, loss 0.11685410887002945\n",
      "Epoch 4600, loss 0.11604755371809006\n",
      "Epoch 4700, loss 0.11544878035783768\n",
      "Epoch 4800, loss 0.11498155444860458\n",
      "Epoch 4900, loss 0.11459235846996307\n",
      "Epoch 5000, loss 0.11424636840820312\n",
      "Epoch 5100, loss 0.11392141133546829\n",
      "Epoch 5200, loss 0.11360254138708115\n",
      "Epoch 5300, loss 0.11327826231718063\n",
      "Epoch 5400, loss 0.1129380613565445\n",
      "Epoch 5500, loss 0.11257144808769226\n",
      "Epoch 5600, loss 0.11216790974140167\n",
      "Epoch 5700, loss 0.11171804368495941\n",
      "Epoch 5800, loss 0.11121618002653122\n",
      "Epoch 5900, loss 0.11066406220197678\n",
      "Epoch 6000, loss 0.1100727990269661\n",
      "Epoch 6100, loss 0.10945852100849152\n",
      "Epoch 6200, loss 0.1088324710726738\n",
      "Epoch 6300, loss 0.10819385945796967\n",
      "Epoch 6400, loss 0.10753246396780014\n",
      "Epoch 6500, loss 0.1068350225687027\n",
      "Epoch 6600, loss 0.10608979314565659\n",
      "Epoch 6700, loss 0.10528767108917236\n",
      "Epoch 6800, loss 0.10442952811717987\n",
      "Epoch 6900, loss 0.10938131809234619\n",
      "Epoch 7000, loss 0.1037573292851448\n",
      "Epoch 7100, loss 0.10277057439088821\n",
      "Epoch 7200, loss 0.10172288864850998\n",
      "Epoch 7300, loss 0.14420673251152039\n",
      "Epoch 7400, loss 0.10086404532194138\n",
      "Epoch 7500, loss 0.09965655952692032\n",
      "Epoch 7600, loss 0.21857495605945587\n",
      "Epoch 7700, loss 0.09857890754938126\n",
      "Epoch 7800, loss 0.09720908850431442\n",
      "Epoch 7900, loss 0.13453078269958496\n",
      "Epoch 8000, loss 0.09582042694091797\n",
      "Epoch 8100, loss 0.11487332731485367\n",
      "Epoch 8200, loss 0.09444355964660645\n",
      "Epoch 8300, loss 0.09582962840795517\n",
      "Epoch 8400, loss 0.09353746473789215\n",
      "Epoch 8500, loss 0.09426011890172958\n",
      "Epoch 8600, loss 0.0927143469452858\n",
      "Epoch 8700, loss 0.09655667841434479\n",
      "Epoch 8800, loss 0.09129776805639267\n",
      "Epoch 8900, loss 0.11083705723285675\n",
      "Epoch 9000, loss 0.08991353958845139\n",
      "Epoch 9100, loss 0.14281043410301208\n",
      "Epoch 9200, loss 0.08911936730146408\n",
      "Epoch 9300, loss 0.12298110872507095\n",
      "Epoch 9400, loss 0.08964411169290543\n",
      "Epoch 9500, loss 0.09805383533239365\n",
      "Epoch 9600, loss 0.09374690055847168\n",
      "Epoch 9700, loss 0.09076587110757828\n",
      "Epoch 9800, loss 0.10411842167377472\n",
      "Epoch 9900, loss 0.08861318230628967\n",
      "Epoch 10000, loss 0.11115726083517075\n",
      "Epoch 10100, loss 0.08809737861156464\n",
      "Epoch 10200, loss 0.10591144114732742\n",
      "Epoch 10300, loss 0.08839229494333267\n",
      "Epoch 10400, loss 0.09888221323490143\n",
      "Epoch 10500, loss 0.0890384241938591\n",
      "Epoch 10600, loss 0.09463941305875778\n",
      "Epoch 10700, loss 0.08952675759792328\n",
      "Epoch 10800, loss 0.09245498478412628\n",
      "Epoch 10900, loss 0.08950290828943253\n",
      "Epoch 11000, loss 0.09142446517944336\n",
      "Epoch 11100, loss 0.08894931524991989\n",
      "Epoch 11200, loss 0.09106878936290741\n",
      "Epoch 11300, loss 0.08808255195617676\n",
      "Epoch 11400, loss 0.09109324216842651\n",
      "Epoch 11500, loss 0.08718133717775345\n",
      "Epoch 11600, loss 0.09111678600311279\n",
      "Epoch 11700, loss 0.08649890124797821\n",
      "Epoch 11800, loss 0.090533547103405\n",
      "Epoch 11900, loss 0.08624352514743805\n",
      "Epoch 12000, loss 0.0889744907617569\n",
      "Epoch 12100, loss 0.08656256645917892\n",
      "Epoch 12200, loss 0.08703208714723587\n",
      "Epoch 12300, loss 0.08731607347726822\n",
      "Epoch 12400, loss 0.08567575365304947\n",
      "Epoch 12500, loss 0.08750273287296295\n",
      "Epoch 12600, loss 0.08532178401947021\n",
      "Epoch 12700, loss 0.08629077672958374\n",
      "Epoch 12800, loss 0.08582007884979248\n",
      "Epoch 12900, loss 0.08497832715511322\n",
      "Epoch 13000, loss 0.08601098507642746\n",
      "Epoch 13100, loss 0.08470550179481506\n",
      "Epoch 13200, loss 0.08496197313070297\n",
      "Epoch 13300, loss 0.0851203203201294\n",
      "Epoch 13400, loss 0.08419030159711838\n",
      "Epoch 13500, loss 0.08469609916210175\n",
      "Epoch 13600, loss 0.08437471836805344\n",
      "Epoch 13700, loss 0.08384833484888077\n",
      "Epoch 13800, loss 0.08425172418355942\n",
      "Epoch 13900, loss 0.08384917676448822\n",
      "Epoch 14000, loss 0.08351168781518936\n",
      "Epoch 14100, loss 0.0837814211845398\n",
      "Epoch 14200, loss 0.08345585316419601\n",
      "Epoch 14300, loss 0.08316633850336075\n",
      "Epoch 14400, loss 0.08333531022071838\n",
      "Epoch 14500, loss 0.08313349634408951\n",
      "Epoch 14600, loss 0.08284057676792145\n",
      "Epoch 14700, loss 0.08291363716125488\n",
      "Epoch 14800, loss 0.08284101635217667\n",
      "Epoch 14900, loss 0.08256378769874573\n",
      "Epoch 15000, loss 0.0825226753950119\n",
      "Epoch 15100, loss 0.08253800868988037\n",
      "Epoch 15200, loss 0.08234163373708725\n",
      "Epoch 15300, loss 0.08219556510448456\n",
      "Epoch 15400, loss 0.08220309764146805\n",
      "Epoch 15500, loss 0.08213148266077042\n",
      "Epoch 15600, loss 0.08196160942316055\n",
      "Epoch 15700, loss 0.08188262581825256\n",
      "Epoch 15800, loss 0.0818706527352333\n",
      "Epoch 15900, loss 0.08178196102380753\n",
      "Epoch 16000, loss 0.08165131509304047\n",
      "Epoch 16100, loss 0.08158800005912781\n",
      "Epoch 16200, loss 0.0815621167421341\n",
      "Epoch 16300, loss 0.0814875140786171\n",
      "Epoch 16400, loss 0.08138316869735718\n",
      "Epoch 16500, loss 0.08131742477416992\n",
      "Epoch 16600, loss 0.08128481358289719\n",
      "Epoch 16700, loss 0.08123164623975754\n",
      "Epoch 16800, loss 0.08114989101886749\n",
      "Epoch 16900, loss 0.08107993006706238\n",
      "Epoch 17000, loss 0.08103860914707184\n",
      "Epoch 17100, loss 0.08100111037492752\n",
      "Epoch 17200, loss 0.08094451576471329\n",
      "Epoch 17300, loss 0.08087917417287827\n",
      "Epoch 17400, loss 0.08082716912031174\n",
      "Epoch 17500, loss 0.08079080283641815\n",
      "Epoch 17600, loss 0.08075429499149323\n",
      "Epoch 17700, loss 0.08070697635412216\n",
      "Epoch 17800, loss 0.08065526932477951\n",
      "Epoch 17900, loss 0.08061099797487259\n",
      "Epoch 18000, loss 0.0805768370628357\n",
      "Epoch 18100, loss 0.08054520189762115\n",
      "Epoch 18200, loss 0.0805085152387619\n",
      "Epoch 18300, loss 0.08046756684780121\n",
      "Epoch 18400, loss 0.08042874932289124\n",
      "Epoch 18500, loss 0.08039584755897522\n",
      "Epoch 18600, loss 0.08036766946315765\n",
      "Epoch 18700, loss 0.08033981174230576\n",
      "Epoch 18800, loss 0.08030935376882553\n",
      "Epoch 18900, loss 0.08027711510658264\n",
      "Epoch 19000, loss 0.08024638146162033\n",
      "Epoch 19100, loss 0.08021920174360275\n",
      "Epoch 19200, loss 0.08019520342350006\n",
      "Epoch 19300, loss 0.08017196506261826\n",
      "Epoch 19400, loss 0.08014816790819168\n",
      "Epoch 19500, loss 0.08012326806783676\n",
      "Epoch 19600, loss 0.08009876310825348\n",
      "Epoch 19700, loss 0.08007566630840302\n",
      "Epoch 19800, loss 0.08005455136299133\n",
      "Epoch 19900, loss 0.08003505319356918\n",
      "Epoch 20000, loss 0.08001600205898285\n",
      "Epoch 20100, loss 0.07999684661626816\n",
      "Epoch 20200, loss 0.07997742295265198\n",
      "Epoch 20300, loss 0.07995841652154922\n",
      "Epoch 20400, loss 0.07994042336940765\n",
      "Epoch 20500, loss 0.07992346584796906\n",
      "Epoch 20600, loss 0.07990763336420059\n",
      "Epoch 20700, loss 0.07989228516817093\n",
      "Epoch 20800, loss 0.07987724244594574\n",
      "Epoch 20900, loss 0.0798620656132698\n",
      "Epoch 21000, loss 0.07984697818756104\n",
      "Epoch 21100, loss 0.07983215153217316\n",
      "Epoch 21200, loss 0.07981813699007034\n",
      "Epoch 21300, loss 0.07980509847402573\n",
      "Epoch 21400, loss 0.07979264110326767\n",
      "Epoch 21500, loss 0.07978061586618423\n",
      "Epoch 21600, loss 0.07976862043142319\n",
      "Epoch 21700, loss 0.07975666224956512\n",
      "Epoch 21800, loss 0.07974482327699661\n",
      "Epoch 21900, loss 0.07973325997591019\n",
      "Epoch 22000, loss 0.07972212880849838\n",
      "Epoch 22100, loss 0.07971148192882538\n",
      "Epoch 22200, loss 0.07970128208398819\n",
      "Epoch 22300, loss 0.07969135046005249\n",
      "Epoch 22400, loss 0.07968170940876007\n",
      "Epoch 22500, loss 0.07967211306095123\n",
      "Epoch 22600, loss 0.07966261357069016\n",
      "Epoch 22700, loss 0.07965323328971863\n",
      "Epoch 22800, loss 0.07964415103197098\n",
      "Epoch 22900, loss 0.07963545620441437\n",
      "Epoch 23000, loss 0.07962704449892044\n",
      "Epoch 23100, loss 0.07961872220039368\n",
      "Epoch 23200, loss 0.07961055636405945\n",
      "Epoch 23300, loss 0.07960247993469238\n",
      "Epoch 23400, loss 0.07959458231925964\n",
      "Epoch 23500, loss 0.07958684116601944\n",
      "Epoch 23600, loss 0.07957936823368073\n",
      "Epoch 23700, loss 0.0795719176530838\n",
      "Epoch 23800, loss 0.07956449687480927\n",
      "Epoch 23900, loss 0.0795573815703392\n",
      "Epoch 24000, loss 0.07955048233270645\n",
      "Epoch 24100, loss 0.07954376190900803\n",
      "Epoch 24200, loss 0.07953708618879318\n",
      "Epoch 24300, loss 0.07953052222728729\n",
      "Epoch 24400, loss 0.07952399551868439\n",
      "Epoch 24500, loss 0.07951746881008148\n",
      "Epoch 24600, loss 0.0795111134648323\n",
      "Epoch 24700, loss 0.07950492948293686\n",
      "Epoch 24800, loss 0.07949880510568619\n",
      "Epoch 24900, loss 0.07949275523424149\n",
      "Epoch 25000, loss 0.07948681712150574\n",
      "Epoch 25100, loss 0.07948099821805954\n",
      "Epoch 25200, loss 0.07947523146867752\n",
      "Epoch 25300, loss 0.07946949452161789\n",
      "Epoch 25400, loss 0.07946392893791199\n",
      "Epoch 25500, loss 0.07945843786001205\n",
      "Epoch 25600, loss 0.07945296168327332\n",
      "Epoch 25700, loss 0.07944752275943756\n",
      "Epoch 25800, loss 0.07944219559431076\n",
      "Epoch 25900, loss 0.0794370248913765\n",
      "Epoch 26000, loss 0.0794319286942482\n",
      "Epoch 26100, loss 0.0794268399477005\n",
      "Epoch 26200, loss 0.07942177355289459\n",
      "Epoch 26300, loss 0.07941675186157227\n",
      "Epoch 26400, loss 0.07941170781850815\n",
      "Epoch 26500, loss 0.07940678298473358\n",
      "Epoch 26600, loss 0.0794018805027008\n",
      "Epoch 26700, loss 0.0793970599770546\n",
      "Epoch 26800, loss 0.07939232140779495\n",
      "Epoch 26900, loss 0.07938770204782486\n",
      "Epoch 27000, loss 0.07938310503959656\n",
      "Epoch 27100, loss 0.07937859743833542\n",
      "Epoch 27200, loss 0.07937402278184891\n",
      "Epoch 27300, loss 0.07936949282884598\n",
      "Epoch 27400, loss 0.07936502248048782\n",
      "Epoch 27500, loss 0.07936051487922668\n",
      "Epoch 27600, loss 0.0793561041355133\n",
      "Epoch 27700, loss 0.0793517604470253\n",
      "Epoch 27800, loss 0.07934746891260147\n",
      "Epoch 27900, loss 0.07934325933456421\n",
      "Epoch 28000, loss 0.07933911681175232\n",
      "Epoch 28100, loss 0.07933501899242401\n",
      "Epoch 28200, loss 0.07933088392019272\n",
      "Epoch 28300, loss 0.07932674139738083\n",
      "Epoch 28400, loss 0.07932257652282715\n",
      "Epoch 28500, loss 0.07931843400001526\n",
      "Epoch 28600, loss 0.07931431382894516\n",
      "Epoch 28700, loss 0.07931022346019745\n",
      "Epoch 28800, loss 0.0793062075972557\n",
      "Epoch 28900, loss 0.07930229604244232\n",
      "Epoch 29000, loss 0.07929842919111252\n",
      "Epoch 29100, loss 0.07929456233978271\n",
      "Epoch 29200, loss 0.07929074019193649\n",
      "Epoch 29300, loss 0.07928694039583206\n",
      "Epoch 29400, loss 0.07928312569856644\n",
      "Epoch 29500, loss 0.07927931845188141\n",
      "Epoch 29600, loss 0.07927553355693817\n",
      "Epoch 29700, loss 0.0792718231678009\n",
      "Epoch 29800, loss 0.07926808297634125\n",
      "Epoch 29900, loss 0.07926438003778458\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_history = []\n",
    "for epoch in range(N_EPOCHS):\n",
    "    model, opt_state, loss = make_step(model, opt_state, x_samples, y_samples)\n",
    "    loss_history.append(loss)\n",
    "\n",
    "    if epoch % 100 == 0:\n",
    "        print(f\"Epoch {epoch}, loss {loss}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAGdCAYAAAD3zLwdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLS0lEQVR4nO3deXhTdb4/8PfJ1oUutJS2lNICgkBZyl4rglCqULWjuDHiSMV74c5M+Y3aUUZnkTtz74izXK46txfUERHvOKAOoMOmUAQEi0ChQK2UxbKWthTovib5/v5IGpI2XdImOTnJ+/U8fUzOOTn55NDl7Xc7khBCgIiIiIigkrsAIiIiIk/BYERERERkxmBEREREZMZgRERERGTGYERERERkxmBEREREZMZgRERERGTGYERERERkppG7AKUxGo0oKSlBcHAwJEmSuxwiIiLqBiEEampqEBMTA5Wq43YhBiMHlZSUYNCgQXKXQURERD1w6dIlxMbGdrifwchBwcHBAEwXNiQkROZqiIiIqDuqq6sxaNAgy9/xjjAYOai1+ywkJITBiIiISGG6GgbDwddEREREZgxGRERERGYMRkRERERmDEZEREREZgxGRERERGYMRkRERERmDEZEREREZgxGRERERGYMRkRERERmDEZEREREZgxGRERERGYMRkRERERmPh2M5s2bh7CwMDz66KNyl4IV277D8k8LUFXfIncpREREPsung9Gzzz6LdevWyV0GAGBd7gW8n3sB1Y0MRkRERHLx6WA0c+ZMBAcHy10GAECjlgAALQajzJUQERH5rh4FoytXruBHP/oR+vXrh4CAAIwdOxZHjhxxWlH79u1Deno6YmJiIEkSNm/ebPe47OxsDB48GP7+/khKSsKhQ4ecVoO7adWmfwq9UchcCRERke9yOBjdvHkT06ZNg1arxfbt21FYWIj/+q//QlhYmN3jDxw4gJaW9t1DhYWFKCsrs/uauro6JCYmIjs7u8M6NmzYgKysLCxfvhxHjx5FYmIi5syZg/Lycssx48ePx5gxY9p9lZSUOPipXU+jYosRERGR3DSOvuAPf/gDBg0ahPfee8+ybciQIXaPNRqNyMzMxPDhw7F+/Xqo1WoAQFFREVJSUpCVlYVly5a1e11aWhrS0tI6rWPlypVYvHgxFi1aBABYvXo1tm7dijVr1uCll14CAOTn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zp49K373u9+JI0eOiOLiYvHpp5+KoUOHihkzZljO4SvX6qWXXhJ79+4VxcXF4sSJE+Kll14SkiSJL774QgihzO8pBiMP8Ze//EXExcUJnU4npk6dKg4ePCh3SS41f/58MWDAAKHT6cTAgQPF/PnzxdmzZy37GxoaxE9/+lMRFhYmAgMDxbx588TVq1dtznH+/HmRlpYmAgICREREhPj5z38uWlpabI758ssvxfjx44VOpxNDhw4V7733njs+Xq98+eWXAkC7r4yMDCGEacr+b37zGxEVFSX8/PzE7NmzRVFRkc05rl+/Lp544gkRFBQkQkJCxKJFi0RNTY3NMcePHxd33XWX8PPzEwMHDhSvvfZau1o++ugjcfvttwudTidGjx4ttm7d6rLP3ROdXav6+npx7733iv79+wutVivi4+PF4sWL2/2i9JVrZe86AbD5mXDnz50n/87r6lpdvHhRzJgxQ4SHhws/Pz8xbNgw8eKLL9qsYySEb1yrZ555RsTHxwudTif69+8vZs+ebQlFQijze0oSQgjH25mIiIiIvA/HGBERERGZMRgRERERmTEYEREREZkxGBERERGZMRgRERERmTEYEREREZkxGBERERGZMRgRERERmTEYEREREZkxGBERERGZMRgRERERmTEYEREREZn9fxURbAu1HMQnAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(loss_history)\n",
    "plt.yscale(\"log\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7efb8b544400>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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suHgwYNo1aqVj0akDJeNHJgyZQpGjRqFa6+9FklJSZg3bx7KysrwyCOP+HpomlFaWmpxN5OXl4fs7GzExMSgZcuWPhyZdowbNw6ffvopvvnmG9SvX9+cMxUdHY06der4eHTaMX36dAwcOBAtW7bE+fPn8emnn2L79u3YuHGjr4emGfXr17fKlapbty4aNWrEHKoannnmGQwZMgStWrXCyZMnMXPmTOj1eowcOdLXQ9OMyZMno3fv3njllVdwzz33ICsrC++99x7ee+89Xw9NHl+XO2nd22+/LbVs2VIKCwuTkpKSpMzMTF8PSVO2bdsmAbD6GjVqlK+Hphm2Ph8A0kcffeTroWnKo48+KrVq1UoKCwuTmjRpIt1yyy3SDz/84OthaR5Lpa3de++9UlxcnBQWFiY1b95cuvfee6VDhw75elias379eikxMVEKDw+XOnbsKL333nu+HpJsgiRJko/iJiIiIiLFmPNCREREfoXBCxEREfkVBi9ERETkVxi8EBERkV9h8EJERER+hcELERER+RUGL0RERORXGLwQERGRX2HwQkRERH6FwQsRERH5FQYvRERE5FcYvBAREZFf+X92pm9W2UFOCAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_samples, y_samples)\n",
    "plt.scatter(x_samples, jax.vmap(model)(x_samples))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "265371ff1b98b9f4eaa16d44fb1eb5bb5e02f4557e1c68186d1d500959ccd159"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
